import signal
import os

class MyApp:
    def __init__(self):
        # 注册 SIGABRT 信号处理器,这一步很关键，你注册了哪个信号，就会调用哪个信号的处理器
        # signal.signal(signal.SIGABRT, True)
        signal.signal(signal.SIGABRT, self._set_abort)
        self.aborted = False

    def _set_abort(self, signum, text):
        """处理 SIGABRT 信号的方法"""
        print(f"接收到 SIGABRT 信号 (编号: {signum})")
        self.aborted = False
        # 可以在这里添加资源清理代码
        print("准备优雅退出..................... {}".format(text))

    def run(self):
        while not self.aborted:
            print("程序运行中...")
            try:
                pass
                #模拟可能触发 abort 的操作
                # if input("输入 'abort' 触发 SIGABRT: ") == "abort":
                #     self._set_abort(102,"用户输入 abort 触发")
            except KeyboardInterrupt:
                break

if __name__ == "__main__":
    app = MyApp()
    app.run()